🔍 Загадка для разработчиков

Что за паттерн загадан на картинке? Пишите в комменты ответ под спойлером.

💬 Рассказывайте интересные кейсы реализации из практики

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🆕 Java Digest: подборка материалов

🔹 Spring-потрошитель

Автор делится опытом анализа и оптимизации Spring-приложений, выявляя скрытые зависимости и избыточные компоненты.

Рассматриваются методы обнаружения неиспользуемых бинов, циклических зависимостей и других архитектурных дефектов, влияющих на производительность и поддерживаемость кода.

🔹 Тестирование CAP-теоремы на примере MongoDB

Автор проводит серию тестов с различными параметрами writeConcern и readConcern, анализируя их влияние на согласованность и доступность данных.

Рассматриваются реальные сценарии, включая сбои и аварийные ситуации, с целью выявления оптимальных настроек для обеспечения требуемых свойств системы.

🔹 Clean your Memory: From Finalize to Cleaner

Рассматриваются проблемы, связанные с finalize(), такие как непредсказуемость вызова и возможные утечки памяти.

Введение в Cleaner предоставляет более гибкий и эффективный механизм для освобождения ресурсов, улучшая производительность и стабильность приложений.

🐸 Библиотека джависта #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
Как улучшить код? Отвечайте на опрос и добавляйте варианты в комментарии.
🔥 Конкурс: 30 000 ₽ за самую смешную IT-новость

Напоминаем о конкурсе «Библиотеки программиста»: напишите самую смешную версию реальной новости про технологии.

👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.

🎁 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе

🏆 Как будем оценивать:
Мы выложим новости всех участников в одном из наших телеграм-каналов. Те новости, которые наберут больше всего охвата, войдут в шорт-лист. Из шорт-листа подписчики и жюри выберут победителя.

📅 Сроки: прием новостей до 11 мая включительно

Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8

Осталась неделя — ждем ваших новостей!
😮 Топ-вакансий для джавистов за неделю

Java Developer — 250 000 —‍ 450 000 ₽ — гибрид (Москва, Санкт-Петербург, Екатеринбург, Нижний Новгород, Казань, Новосибирск, Симферополь, Минск)

Java-разработчик (стажер/intern) — до 60 000 ₽ — гибрид (Екатеринбург)

Разработчик на Java (Кинопоиск) 300 000 —‍ 370 000 ₽ — гибрид (Москва, Санкт-Петербург)

Java Developer — до 500 000 ₽ — гибрид (Москва)

➡️ Еще больше топовых вакансий — в нашем канале Java jobs
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Инструмент недели: Apache Sling

Apache Sling — это фреймворк для создания контент-ориентированных приложений на Java. Он использует RESTful архитектуру, в которой URL-адреса напрямую соответствуют структуре контента в репозитории, что позволяет создавать гибкие и масштабируемые веб-приложения.

Фичи: интеграция с репозиториями JCR, поддержка различных языков шаблонов и скриптов, динамическая загрузка компонентов с помощью OSGi, модульность и масштабируемость. Apache Sling идеально подходит для разработки приложений, ориентированных на управление контентом.

🔗 Apache Sling на GitHub

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🧘‍♂️ Скучная работа в IT: путь к счастью или упущенные возможности?

В мире IT царит культ престижных компаний — FAANG, стартапов, хайпа. Но что, если настоящая гармония скрыта в «скучной» работе с мягкими дедлайнами, стабильным графиком и отсутствием стресса. Может ли спокойная работа в нетехнических компаниях быть ключом к удовлетворению и балансу между работой и личной жизнью?

🔹 Основные тезисы:

— Сотрудники «скучных» компаний отмечают спокойный темп работы, что позволяет уделять больше времени хобби и семье.​
— Отсутствие переработок и гибкий график способствуют лучшему самочувствию и удовлетворенности жизнью.​
— Хотя зарплаты могут быть ниже, стабильность и льготы компенсируют это.​

💬 Стоит ли жертвовать карьерными амбициями ради спокойствия?

🔗 Подробнее в статье

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Генерим Spring Boot-фичи с AI

Нужно быстро набросать сервис для бизнес-функции? AI поможет сэкономить часы на шаблонах, валидации и boilerplate.

📝 Промпт:

Generate a Spring Boot REST endpoint that handles [описание бизнес-логики]. Include request/response DTOs, validation, exception handling, and service-layer interaction. Use best practices and explain design decisions.


💡 Дополнительные возможности:

— Добавьте Use Java 17+ features if possible, чтобы сразу писать современно
— Добавьте Add unit tests for controller and service, чтобы не откладывать на потом
— Добавьте Make it modular for future feature extension, если планируется масштабирование

💬 А вы используете AI как «копилку шаблонов» или уже доверяете ему фичи под ключ?

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🎯 Как добавить кастомные метрики в Spring Boot Actuator

В проде важно не просто «чтобы работало», а знать, как работает. Spring Boot Actuator позволяет получать системную информацию, но по-настоящему полезным он становится с кастомными метриками.

1️⃣ Добавьте зависимости

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>


Также добавьте экспорт метрик в application.yml:
management:
endpoints:
web:
exposure:
include: health, info, metrics, prometheus
metrics:
export:
prometheus:
enabled: true


2️⃣ Создайте кастомную метрику

Например, метрика количества обращений к сервису:
@Component
public class CustomMetrics {

private final Counter requestCounter;

public CustomMetrics(MeterRegistry registry) {
this.requestCounter = Counter.builder("custom_requests_total")
.description("Total custom requests")
.register(registry);
}

public void countRequest() {
requestCounter.increment();
}
}


Теперь можно вызывать countRequest() в любом месте.

3️⃣ Интегрируйте в проект
@RestController
@RequiredArgsConstructor
public class MetricsTestController {

private final CustomMetrics customMetrics;

@GetMapping("/hello")
public String hello() {
customMetrics.countRequest();
return "Hello!";
}
}


Каждый вызов /hello увеличивает счётчик.

4️⃣ Проверьте метрику

Откройте в браузере или через curl:
http://localhost:8080/actuator/prometheus


Найдите строку:
custom_requests_total{...} 42.0


📌 Реальный профит: такие метрики позволяют строить Grafana-дэшборды, ставить алерты в Prometheus и быстро ловить аномалии.

💬 Используете кастомные метрики или довольствуетесь встроенными?

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Всё на sealed, или старый добрый interface + impl?

С выходом Java 21 в стабильный релиз sealed-типы наконец-то стали полноценным инструментом. Формально они позволяют явно ограничивать наследование, делают модель более предсказуемой и защищённой.

Казалось бы — бери и используй везде, особенно там, где важна неизменность и контроль, как в DDD, CQRS или API-слоях.

Но в реальности мнения расходятся. Одни начинают всё новое писать через sealed, чтобы убрать "лишнюю гибкость", другие придерживаются старого доброго interface + impl, ссылаясь на читаемость, тестируемость и простоту изменений.

💬 Вопрос к вам:

Sealed — это реальный шаг вперёд в проработке модели, или ненужный контроль там, где раньше всё было гибко и понятно?

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👑 Фишка Lombok — @With

Знаете, как в Java обычно обновить одно поле в неизменяемом объекте? Нужно создавать копию с нужным значением. Муторно. Lombok умеет делать это элегантно.

🔹 Что делает @With

Генерирует методы withX(...), которые создают копию объекта с изменённым полем. Подходит для immutable-моделей и паттерна builder. Класс при этом должен быть final (например, через @Value или вручную).


🔹 Пример
@Value
@With
public class User {
String name;
int age;
}


Теперь можно:
User user1 = new User("Alice", 25);
User user2 = user1.withAge(30); // создаётся новый объект с новым age


Объекты остаются неизменяемыми, но при этом легко "обновляемыми".

🔹 Зачем это нужно

— Удобно при работе с immutable-классами.
— Простой способ "копировать с изменением".
— Чистый, декларативный стиль без boilerplate.

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 HTTP/2: эволюция веб-протокола

Если вы работаете с REST API, микросервисами или веб-приложениями на Spring Boot, понимание HTTP/2 — не просто полезно, а необходимо.

В отличие от HTTP/1.1, где каждое TCP-соединение обрабатывает только один запрос одновременно, HTTP/2 позволяет осуществлять параллельную передачу нескольких запросов и ответов по одному соединению.

Это означает:

— Экономия ресурсов сервера и клиента.
— Одновременная передача нескольких потоков данных.
— Уменьшение объема передаваемой информации.

🔗 Подробнее в статье

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🆕 Java Digest: подборка материалов

🔹 Как избавиться от Flaky-тестов с помощью JMina

Рассматривается использование библиотеки JMina для стабилизации нестабильных тестов. Автор делится практиками выявления и устранения причин нестабильности, улучшая надежность тестового покрытия.

🔹 Как ZGC аллоцирует память в хипе

Анализируется поведение сборщика мусора ZGC при выделении памяти. Обсуждаются особенности работы ZGC, его преимущества и потенциальные подводные камни при использовании в различных сценариях.

🔹
Паттерны и методологии разработки

Подборка материалов, посвященных современным паттернам проектирования и методологиям разработки. Рассматриваются лучшие практики, помогающие создавать устойчивые и масштабируемые приложения.

🐸 Библиотека джависта #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
😮 Топ-вакансий для джавистов за неделю

Разработчик бэкенда (BDUI-платформа) — 220 000 —‍ 480 000 ₽ — гибрид (Москва)

Java-разработчикот 100 000 до 200 000 ₽ — удалёнка

Java Developer от 300 000 ₽ — удалёнка

Senior Java Developerот 4 500 до 6 000 € — гибрид (Москва)

➡️ Еще больше топовых вакансий — в нашем канале Java jobs
Please open Telegram to view this post
VIEW IN TELEGRAM
2025/05/13 00:05:23
Back to Top
HTML Embed Code: